package com.groovy.domain

import org.junit.Test

class ArrayTest {


    //初始化数据
    def initArrayData() {
        //列表排序
        def array = [0, -1, 3, 5, 6, 9, 10, 15, 8, 40, 25]
        return array
    }


    @Test
    void testSortArray() {
        def array = initArrayData()
        array.sort { a, b ->
            //2个值进行对比，通过绝对值进行比较，从大到小进行排序
            a == b ? 0 : Math.abs(a) < Math.abs(b) ? 1 : -1
        }
        println(array)
    }

    @Test
    void testFind() {
        //列表排序
        def array = initArrayData()

        //找出偶数的数据
        def findRet = array.find {
            return it % 2 == 0
        }
        println(findRet)
    }

    @Test
    void testFindAll() {
        //列表排序
        def array = initArrayData()

        //找出基数的数据
        def findRet = array.findAll {
            return it % 2 != 0
        }
        println(findRet.toListString())
    }


    @Test
    void testAny() {
        //列表排序
        def array = initArrayData()

        //找出基数的数据
        def findRet = array.any {
            return it % 2 != 0
        }
        println(findRet)
    }

    @Test
    void testEvery() {
        //列表排序
        def array = initArrayData()

        //找出偶数的数据
        def findRet = array.every {
            return it % 2 == 0
        }
        println(findRet)
    }


    @Test
    void testArrayMax() {
        //列表排序
        def array = initArrayData()

        //找出最大值
        println(array.max())
    }

    @Test
    void testArrayMin() {
        //列表排序
        def array = initArrayData()
        //找出最小值
        println(array.min())
    }


    @Test
    void testSortSize() {
        //列表排序
        def array = ["Swift", "Kotlin", "JavaScript",
                     "TypeScript", "Vue", "Java", "Scala", "Groovy", "Docker"
        ]
        //按照数组的字符串大小进行排序
        array.sort { it -> it.size() }
        println(array)
    }

    @Test
    void testCount() {
        //列表排序
        def array = ["Swift", "Kotlin", "JavaScript",
                     "TypeScript", "Vue", "Java", "Scala", "Groovy", "Docker"
        ]

        //统计有多少个字符串包含Java
        def count = array.count {return it.find("Java") }

        println(count)
    }
}
